package com.gxan.web.servlet.training;
import com.alibaba.fastjson.JSONObject;
import com.gxan.pojo.Training;
import com.gxan.service.TrainingService;
import com.gxan.service.impl.TrainingServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

//查询所有培训计划
@WebServlet("/training/findTrainingAll")
public class FindTrainingAllServlet extends HttpServlet {
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        response.setContentType("application/json;charset=utf-8");//设置返回结果的编码格式
        Map resultMap = new HashMap<>();//自定义map对象的方式返回结果给前端
        try {
            TrainingService trainingService =new TrainingServiceImpl();//先去创建service层，然后把service层new出来
            Integer page = Integer.parseInt(request.getParameter("page"));//得到当前页码数
            Integer limit = Integer.parseInt(request.getParameter("limit"));//得到每页显示多少条数
            //方法可以反过来去定义，这里的需求是list带实体对象，把得到的当前页码书和每页显示的条数传到service再传到dao再传到数据库，最后返回结果回来
            List<Training> trainingList = trainingService.findTrainingAll(page,limit);
            resultMap.put("code",0);//塞对应的值，0表示成功，-1表示失败
            resultMap.put("msg","查询成功");//塞对应的值，查询成功后的提示
            //查询总条数，不能直接写死，把查询到的总的条数塞进去，直接在这里反向定义方法empService.countEmp()
            resultMap.put("count",trainingService.countTraining());
            resultMap.put("data",trainingList);//在这里把查询到的集合对象塞进去
            //需要将Java对象转换为json字符串对象才能在网络中进行传输，把得到的集合对象转成json数据返回，以流的方式进行传输
            response.getWriter().write(JSONObject.toJSONString(resultMap));
        }catch (Exception e){//处理异常
            e.printStackTrace();
            resultMap.put("code",-1);
            resultMap.put("msg","系统出错了，请联系管理员!!!");
            //需要将Java对象转换为json字符串对象才能在网络中进行传输，把得到的集合对象转成json数据返回，以流的方式进行传输
            response.getWriter().write(JSONObject.toJSONString(resultMap));
        }
        response.getWriter().flush();//刷新流
        response.getWriter().close();//关闭流
    }
}
